// 引入axios
import axios from 'axios'
import { useStore } from '@/store' //引入登录状态管理器
import crypto from '@/utils/crypto.js'
// 引入qs模块，对数据进行序列化
import QS from 'qs'
// 引入message模块，toast提示
import {
	message
} from 'ant-design-vue'
// 引入storage模块，操作token
// import { session } from '@/utils/storage.js'

// 请求超时时间
axios.defaults.timeout = 5000
// 给 axios 设置请求根路径
// axios.defaults.baseURL = '/activity';
axios.defaults.baseURL = '/byadmin' || '';
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
 
let config = {
// 这里的api就是获取configJS中的地址
  baseURL: '/byadmin'
  // timeout: 60 * 1000, // Timeout
  // withCredentials: true, // Check cross-site Access-Control
};
 
axios.create(config);

// 请求拦截器
axios.interceptors.request.use(
	config => {
		// 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token，不用每次请求都手动添加了
		//是否存在token  需验证登录的请求
		// let token = JSON.parse(localStorage.getItem('userInfo'));
        // if (token!==null && token !=='') config.headers['Authorization'] = token.token;
       
		// if (config.method.toUpperCase() === 'POST') {
		// 	config.headers['Content-Type'] = 'application/json;charset=utf-8';
		// 	config.headers['Access-Control-Allow-Origin'] = '*';
		// }
		// return config
		const store = useStore()
        config.headers['Content-Type'] = 'application/json'
    // application/x-www-form-urlencoded 或 multipart/form-data
    if (store.token) {
      config.headers['Authorization'] = store.token
    }
    return config
	},
	error => {
		return Promise.error(error)
	})
// 响应拦截器
axios.interceptors.response.use(
	response => {
		// console.log(response)
		if (response.status === 200) {
			return Promise.resolve(response)
		} else {
			return Promise.reject(response)
		}
	},
	// 服务器状态码不是200的情况
	error => {
		if (error.response.status) {
			switch (error.response.status) {
				case 500:
					message.error('网错错误，请稍后再试！')
					break
				case 404:
					message.error('网错错误，请稍后再试！')
					break
					// 其他错误，直接抛出错误提示
				default:
					message.error(error.response.data.message)
			}
			return Promise.reject(error.response)
		}
	}
)

/**
 * get方法，对应get请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
const get = (url, params,token="") => {
	if(token != ''){
		axios.defaults.headers.common['X-CSRF-TOKEN'] = token;
	}
	return new Promise((resolve, reject) => {
		axios.get(url, {
				params: params
			})
			.then(res => {
				resolve(res.data)
			})
			.catch(err => {
				reject(err.data)
			})
	})
}
/**
 * post方法，对应post请求
 * @param {String} url [请求的url地址]
 * @param {Object} params [请求时携带的参数]
 */
const post = (url, params,token="") => {

	if(token != ''){
		axios.defaults.headers.common['X-CSRF-TOKEN'] = token;
	}

	return new Promise((resolve, reject) => {
		axios.post(url, params)
			.then(res => {
				resolve(res.data)
			})
			.catch(err => {
				reject(err.data)
			})
	})
}


//end

var api = {
	get,
	post
};
export default api
